package org.itworks.biodev.gui;

import java.util.*;

import org.itworks.biodev.model.*;
import org.itworks.helpers.*;

public class EditOrderDialogModel extends Observable {
	
	private Order order;
	private Vector<Product> selectProductsList = null;
	private Vector<ProductOrder> addProductsList = null;
	private boolean isUpdating = false;

	/* Le modele notifie la vue pour qu'on remplisse le tableau de produits ajoutes a la commande */
	public void setAddProductsList(Vector<ProductOrder> products) {
		addProductsList = products;
		this.setChanged();
		this.notifyObservers(new MVCNotification(EditOrderDialogView.FILL_ADD_PRODUCT_TABLE, addProductsList));
		this.clearChanged();		
	}

	/* On ajoute un produit dans le tableau ou sont les produits de la commande */
	public void addProductToAddProductsList(ProductOrder newProductOrder) {
		if(this.addProductsList == null) {
			this.addProductsList = new Vector<ProductOrder>();
		}
		this.addProductsList.add(newProductOrder);
		
		this.setChanged();
		this.notifyObservers(new MVCNotification(EditOrderDialogView.FILL_ADD_PRODUCT_TABLE, addProductsList));
		this.clearChanged();
	}
	
	/* Le modele notifie la vue pour qu'on remplisse le tableau de produits disponible pour un ajout dans une commande */
	public void setSelectProductsList(Vector<Product> products) {
		selectProductsList = products;

		this.setChanged();
		this.notifyObservers(new MVCNotification(EditOrderDialogView.FILL_SELECT_PRODUCT_TABLE, selectProductsList));
		this.clearChanged();		
	}
	
	/* Permet de savoir si on modifie une commande ou on en cree une nouvelle */ 
	public boolean getIsUpdating() {
		return this.isUpdating;
	}
	
	public void setIsUpdating(boolean isUpdating) {
		this.isUpdating = isUpdating;
		
		this.setChanged();
		this.notifyObservers(new MVCNotification(EditOrderDialogView.STATUS_IS_UPDATING, new String(isUpdating ? "1" : "0")));
		this.clearChanged();
	}
	
	/* On recupere la commande sur laquelle on travaille */
	public Order getOrder() {
		return this.order;
	}
	
	public void setInitOrder(Order o) {
		this.order = o;
		
		this.setChanged();
		this.notifyObservers(new MVCNotification(EditOrderDialogView.SET_ORDER, this.order));
		this.clearChanged();
	}
	
	public void setOrder(Order o) {
		this.order = o;
	}
	
	public Vector<Product> getSelectProductsList() {
		return selectProductsList;
	}
	

	public void setProductList(Vector<Product> products) {
		this.selectProductsList = products;
		
		this.setChanged();
		this.notifyObservers(new MVCNotification(EditOrderDialogView.FILL_SELECT_PRODUCT_TABLE, this.selectProductsList));
		this.clearChanged();
		
	}

	public Vector<ProductOrder> getAddProductsList() {
		return addProductsList;
	}

	
	
}
